<?php
include_once($_SERVER["DOCUMENT_ROOT"].'/outils/properties/PropertiesLoader.php');
include_once($_SERVER["DOCUMENT_ROOT"].'/service/entite/photo/PhotoService.php');
include_once($_SERVER["DOCUMENT_ROOT"].'/service/entite/albumphoto/AlbumPhotoService.php');
PropertiesLoader::loadProperties($_SERVER["DOCUMENT_ROOT"].'/properties.ini');

PhotoCoherenceChecker::getRapport();
class PhotoCoherenceChecker {

	public static function getRapport(){
		//phpinfo();
		echo "<br/>Albums manquants en bases :";
		$cheminAlbumPhoto = $_SERVER["DOCUMENT_ROOT"].PropertiesLoader::getProperty("albumPhoto.chemin");
	
		//Vérifie que tous albums du disque ont un enregistrement en base
		$listeDossierAlbumPhoto = scandir($cheminAlbumPhoto);
		foreach($listeDossierAlbumPhoto as $dossierAlbumPhoto) {
			$completeCheminAlbumPhoto = $cheminAlbumPhoto . "/" . $dossierAlbumPhoto;
			if ($dossierAlbumPhoto != ".." && $dossierAlbumPhoto != "." && is_dir($completeCheminAlbumPhoto)) {
				$albumPhoto = AlbumPhotoService::getAlbumPhotoByID($dossierAlbumPhoto);
				if ($albumPhoto == null) {
					echo "</br>L'album correspondant à l'ID ", $dossierAlbumPhoto, " n'existe pas <button id='bouton_creation_album_$dossierAlbumPhoto' onclick='createAlbumPhoto($dossierAlbumPhoto)'>Créer l'enregistrement</button><span id='span_creation_album_$dossierAlbumPhoto'></span>";	
				} else {
					PhotoCoherenceChecker::checkPhotosPresentesEnBase($completeCheminAlbumPhoto, $dossierAlbumPhoto);
					PhotoCoherenceChecker::checkPhotosPresentesSurDisque($cheminAlbumPhoto, $dossierAlbumPhoto);
				}
			}	
		}
		
		echo "<br/>Albums manquants sur le disque :";
		//Vérifie que tous enregistrements en base ont un répertoire sur le disque
		$listeAlbumPhoto = AlbumPhotoService::getListeAlbumPhoto();
		foreach($listeAlbumPhoto as $albumPhoto) {
			$completeCheminAlbumPhoto = $cheminAlbumPhoto . "/" . $albumPhoto->id;
			if (!is_dir($completeCheminAlbumPhoto)) {
				echo "</br>L'album avec l'ID ", $albumPhoto->id, " n'a pas de répertoire sur le disque ($completeCheminAlbumPhoto) <button id='bouton_creation_repertoire_album_$albumPhoto->id' onclick='createRepertoireAlbumPhoto($albumPhoto->id)'>Créer le répertoire</button><span id='span_creation_repertoire_album_$albumPhoto->id'></span>";
			}
		}
	}
	
	public static function checkPhotosPresentesEnBase($completeCheminAlbumPhoto, $idAlbumPhoto) {
		$listeNomPhotoAlbum = scandir($completeCheminAlbumPhoto);
 		foreach($listeNomPhotoAlbum as $nomPhotoAlbum) {
 			$completeNomPhotoAlbum = $completeCheminAlbumPhoto . "/". $nomPhotoAlbum;
 			if ($nomPhotoAlbum != ".." && $nomPhotoAlbum != "." && is_file($completeNomPhotoAlbum)) {
 				//c'est une photo -> vérification de l'enregistrement en base
				$photo = PhotoService::getPhotoByNomFichierAndIDAlbumPhoto($idAlbumPhoto, $nomPhotoAlbum);
				if ($photo == null) {
					$nomPhotoAlbumForId = str_replace(".", "_", $nomPhotoAlbum);
					?>
					</br>La photo <?php echo "$nomPhotoAlbum" ?> n'existe pas en base 
					<button id='bouton_creation_photo_<?php echo "$idAlbumPhoto"."_$nomPhotoAlbumForId"?>' onclick='createPhoto(<?php echo "$idAlbumPhoto"?>, "<?php echo "$nomPhotoAlbum"; ?>", "<?php echo "$nomPhotoAlbumForId"; ?>")'>Créer l'enregistrement de la photo</button>
					<span id='span_creation_photo_<?php echo "$idAlbumPhoto"."_$nomPhotoAlbumForId"?>'></span>
					<?php 
				}
 			}
 		}
	}
	
	public static function checkPhotosPresentesSurDisque($cheminAlbumPhoto, $idAlbumPhoto) {
		$albumPhoto = AlbumPhotoService::getAlbumPhotoByID($idAlbumPhoto, true);
		$listePhotoAlbum = $albumPhoto->listePhoto;
		foreach($listePhotoAlbum as $photoAlbum) {
			$nomFichier = $photoAlbum->nomFichier;
			$completeCheminPhotoAlbum = $cheminAlbumPhoto . "/$idAlbumPhoto/" . $photoAlbum->nomFichier;
			if (!is_file($completeCheminPhotoAlbum)) {
				$nomPhotoAlbumForId = str_replace(".", "_", $nomFichier);
				?>
				</br>La photo '<?php echo $nomFichier ?>'  de l'album avec l'ID ", <?php echo $idAlbumPhoto ?>, " n'a pas de fichier sur le disque (<?php echo $completeCheminPhotoAlbum?>) 
				<button id='bouton_suppression_photo_<?php echo "$idAlbumPhoto"."_$nomPhotoAlbumForId"; ?>' onclick='deleteEnregistrementPhotoAlbum(<?php echo $idAlbumPhoto; ?>, "<?php echo $nomFichier; ?>", "<?php echo $nomPhotoAlbumForId; ?>")'>Supprimer l'enregistrement de la photo</button>
				<span id='span_suppression_photo_<?php echo "$idAlbumPhoto"."_$nomPhotoAlbumForId"; ?>'></span>
				<?php 
			}
		}
	}
}

?>